{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "99e96a4b",
   "metadata": {},
   "source": [
    "-------\n",
    "* 记录人：江丽婷\n",
    "* 时间：2021-11-15\n",
    "* week12\n",
    "* 主要参考文档：[Python官方文档] （https://docs.python.org/3.7/tutorial/index.html）\n",
    "\n",
    "----\n",
    "\n",
    "\n",
    "## 本周学习内容\n",
    "### 字典的一般方法\n",
    "\n",
    "> 1.如何查询字典      #字典不关心排序内容\n",
    "> 2.通过字典的方法实现字典的修改（如：增、删、修改）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "6ddb50a0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:07:28.840620Z",
     "start_time": "2021-11-15T02:07:28.826987Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'dict'> \n",
      " {'stu1801': 'ZiQi', 'stu1802': 'XiaoFeng', 'stu1803': 'Liuyu'}\n"
     ]
    }
   ],
   "source": [
    "# 新建字典 dict_name = {key1:value,key2:value2}\n",
    "stu_info = {\n",
    "    \"stu1801\":\"ZiQi\",\n",
    "    \"stu1802\":\"XiaoFeng\",\n",
    "    \"stu1803\":\"Liuyu\"\n",
    "}\n",
    "print(type(stu_info),'\\n',stu_info)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d82b4e5",
   "metadata": {},
   "source": [
    "> 1. 字典的新增（回顾与练习）\n",
    ">>* dict_name[key]=value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "de683b06",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:10:48.008599Z",
     "start_time": "2021-11-15T02:10:48.002952Z"
    }
   },
   "outputs": [],
   "source": [
    "stu_info[\"stu1804\"] = \"Xiaoming\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e788d2c3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:11:06.193550Z",
     "start_time": "2021-11-15T02:11:06.188050Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'stu1801': 'ZiQi', 'stu1802': 'XiaoFeng', 'stu1803': 'Liuyu', 'stu1804': 'Xiaoming'}\n"
     ]
    }
   ],
   "source": [
    "print(stu_info)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2176eecd",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:13:01.344385Z",
     "start_time": "2021-11-15T02:13:01.326818Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'stu1801': 'ZiQi', 'stu1802': 'XiaoHong', 'stu1803': 'Liuyu', 'stu1804': 'Xiaoming'}\n"
     ]
    }
   ],
   "source": [
    "# 需要注意的事情:\n",
    "# 如果字典新增的内容的key已经存在？ ==> 结论：将会对已有的key对应的value进行修改\n",
    "stu_info['stu1802'] = \"XiaoHong\"\n",
    "print(stu_info)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "882ce1ba",
   "metadata": {},
   "source": [
    "> 2.字典的删除\n",
    ">> 1.字典pop（）的一般使用方法：\n",
    ">>> 1.先查询要删除的key是否存在（避免keyerror的报错）: 用in去查询 成员（key） 是否存在\n",
    ">>> 2.然后再删除 ：D.pop(k[,d]) -> v\n",
    "\n",
    ">> 2.字典popitem（）的使用方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d7ff3506",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:16:17.037299Z",
     "start_time": "2021-11-15T02:16:17.022778Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on built-in function pop:\n",
      "\n",
      "pop(...) method of builtins.dict instance\n",
      "    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\n",
      "    If key is not found, d is returned if given, otherwise KeyError is raised\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(stu_info.pop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c8703e1b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:19:00.849481Z",
     "start_time": "2021-11-15T02:19:00.819418Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'ZiQi'"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stu_info.pop(\"stu1801\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "d96fa913",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:19:18.338090Z",
     "start_time": "2021-11-15T02:19:18.318951Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'stu1802': 'XiaoHong', 'stu1803': 'Liuyu', 'stu1804': 'Xiaoming'}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stu_info"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0dfc1775",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:25:41.960655Z",
     "start_time": "2021-11-15T02:25:41.955713Z"
    }
   },
   "outputs": [],
   "source": [
    "# 如果key不存在，会怎么样？  ==>KeyError：'stu1801' 会报错，因此要先查询，避免报错\n",
    "# stu_info.pop(\"stu1801\")\n",
    "if \"stu1801\" in stu_info:    #查询方法\n",
    "    stu_info.pop(\"stu1801\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "d899ea8f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:36:24.847396Z",
     "start_time": "2021-11-15T02:36:24.837100Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'stu1802': 'XiaoHong', 'stu1803': 'Liuyu', 'stu1804': 'Xiaoming'}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stu_info"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "9329d271",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:36:36.950185Z",
     "start_time": "2021-11-15T02:36:36.931312Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on built-in function popitem:\n",
      "\n",
      "popitem() method of builtins.dict instance\n",
      "    Remove and return a (key, value) pair as a 2-tuple.\n",
      "    \n",
      "    Pairs are returned in LIFO (last-in, first-out) order.\n",
      "    Raises KeyError if the dict is empty.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(stu_info.popitem)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "7a820a5b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:38:41.826421Z",
     "start_time": "2021-11-15T02:38:41.815809Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('stu1804', 'Xiaoming')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stu_info.popitem()   # 随机删除一个内容"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "07e7cb17",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:38:57.967553Z",
     "start_time": "2021-11-15T02:38:57.960559Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'stu1802': 'XiaoHong', 'stu1803': 'Liuyu'}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stu_info"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3faf628",
   "metadata": {},
   "source": [
    "> 3.字典的修改\n",
    ">> 1.先查询key是否存在，使用方法 ： in & not in\n",
    ">>> 1.key存在，将对其修改\n",
    ">>> 2.key不存在，将新增该成员（对应字典的新增）\n",
    "\n",
    ">> 2.修改：dict_name[key]= value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8896adc4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:43:23.484104Z",
     "start_time": "2021-11-15T02:43:23.477267Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'stu1802': 'XiaoHong', 'stu1803': 'Liuyu'}"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stu_info"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "4d90daf5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:43:53.354471Z",
     "start_time": "2021-11-15T02:43:53.347892Z"
    }
   },
   "outputs": [],
   "source": [
    "stu_info['stu1802'] = 'LiHua'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "429168e6",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T02:43:59.421306Z",
     "start_time": "2021-11-15T02:43:59.405273Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'stu1802': 'LiHua', 'stu1803': 'Liuyu'}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stu_info"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7134e726",
   "metadata": {},
   "source": [
    "> 4.请大家实践：\n",
    ">> 1.使用help查看字典的其他使用方法\n",
    ">> 2.尝试每一种方法的使用并实践\n",
    ">> 3.请大家用表格记录每一种方法的如何使用、注意事项、使用结果\n",
    "\n",
    "* 示例：\n",
    "\n",
    "| 字典的方法     | Description            | 具体使用 |\n",
    "| ---------------- | --------------------------- |----------------|\n",
    "| pop          | 给定一个存在的key，可以进行| D.pop(k[,d])->v"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b0d005f0",
   "metadata": {},
   "source": [
    "### 2.字典的实践（一）\n",
    "* 课本P112实践：利用字典查看文本元音词频\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "605ac3d7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:03:52.327666Z",
     "start_time": "2021-11-15T03:03:40.699112Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入要查询的文本：hello yuzao\n"
     ]
    }
   ],
   "source": [
    "word = input (\"请输入要查询的文本：\")\n",
    "# 给定元音字母列表\n",
    "vowels = [\"a\",\"e\",\"i\",\"o\",\"u\"]\n",
    "\n",
    "found = {}\n",
    "\n",
    "# found[\"a\"]=0\n",
    "# found[\"e\"]=0\n",
    "# found[\"i\"]=0\n",
    "# found[\"o\"]=0\n",
    "# found[\"u\"]=0\n",
    "\n",
    "for i in vowels:\n",
    "    found[i]=0\n",
    "    \n",
    "for i in word:\n",
    "    # i: a,e,i,o,u 每次遍历一个\n",
    "    if i  in vowels:\n",
    "        found[i] +=1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "66bbafbb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:03:54.232229Z",
     "start_time": "2021-11-15T03:03:54.214684Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 1, 'e': 1, 'i': 0, 'o': 2, 'u': 1}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "found"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d30c51b6",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:04:34.005437Z",
     "start_time": "2021-11-15T03:04:33.999299Z"
    }
   },
   "outputs": [],
   "source": [
    "vowels = [\"a\",\"e\",\"i\",\"o\",\"u\"]\n",
    "\n",
    "found ={}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "82df43ed",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:06:24.807231Z",
     "start_time": "2021-11-15T03:06:24.791605Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 1, 'e': 1, 'i': 1, 'o': 1, 'u': 1}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 初始化 字典 的一种方式\n",
    "found.fromkeys(vowels,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4c28ab46",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:04:49.481217Z",
     "start_time": "2021-11-15T03:04:49.462156Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on built-in function fromkeys:\n",
      "\n",
      "fromkeys(iterable, value=None, /) method of builtins.type instance\n",
      "    Create a new dictionary with keys from iterable and values set to value.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(found.fromkeys)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "627e2a40",
   "metadata": {},
   "source": [
    " ### 3.字典的实践（二）\n",
    " \n",
    "* 知识点：\n",
    "1.setdefault()方法\n",
    "2.sorted()排序\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "vowels = [\"a\",\"e\",\"i\",\"o\",\"u\"]\n",
    "word = input(\"Provide a word to search for vowels:\")\n",
    "found = {}\n",
    "\n",
    "for letter in word:\n",
    "    if letter in vowels:\n",
    "        found.setdefault(letter,0)  #如果是元音字母，就在字典found中初始化这个元音字母，值为0\n",
    "        found[letter] +=1\n",
    "for k,v in sorted(found.items()):\n",
    "    print(k,v)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "57fae5a7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:15:57.217501Z",
     "start_time": "2021-11-15T03:15:57.211950Z"
    }
   },
   "outputs": [],
   "source": [
    "vowels = [\"a\",\"e\",\"i\",\"o\",\"u\"]\n",
    "\n",
    "found ={}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "808744a3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8eeb2f9a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:16:56.674222Z",
     "start_time": "2021-11-15T03:16:56.656836Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on built-in function setdefault:\n",
      "\n",
      "setdefault(key, default=None, /) method of builtins.dict instance\n",
      "    Insert key with a value of default if key is not in the dictionary.\n",
      "    \n",
      "    Return the value for key if key is in the dictionary, else default.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(found.setdefault)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "8c45e75d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:27:19.256876Z",
     "start_time": "2021-11-15T03:27:15.924458Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入文本内容：hello\n"
     ]
    }
   ],
   "source": [
    "# 优化实践（一） ： 文本中不出现的元音字母，不增加到字典当中\n",
    "vowels = [\"a\",\"e\",\"i\",\"o\",\"u\"]\n",
    "found = {}\n",
    "word = input(\"请输入文本内容：\")\n",
    "\n",
    "\n",
    "for i in word:\n",
    "    if i in vowels:\n",
    "        found.setdefault(i,0) # 初始化值为0 ， found中没有该元素时，初始化\n",
    "        found[i] += 1\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "6b9e3ff2",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-15T03:27:25.509906Z",
     "start_time": "2021-11-15T03:27:25.503341Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'e': 1, 'o': 1}"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 只有出现过的元素，统计其词频\n",
    "found"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "422cd28a",
   "metadata": {},
   "source": [
    "### 字典的实践（三）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "04645f84",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:05:41.196964Z",
     "start_time": "2021-12-19T02:05:41.187880Z"
    }
   },
   "outputs": [],
   "source": [
    "people = {}\n",
    "people['Ford'] = {\"Name\":'Ford Prefect',\n",
    "                  \"Gender\":'Male',\n",
    "                  \"Occupation\":'Researcher',\n",
    "                  \"Home Planet\":'Betelgeuse Seven'}\n",
    "people['Arthur'] = {\"Name\":'Arthur Dent',\n",
    "                  \"Gender\":'Male',\n",
    "                  \"Occupation\":'Sandwich-Maker',\n",
    "                  \"Home Planet\":'Earth'}\n",
    "people['Tricia'] = {\"Name\":'Tricia McMillan',\n",
    "                    \"Gender\":'Female',\n",
    "                    \"Occupation\":'Mathematician',\n",
    "                    \"Home Planet\":'Earth'}\n",
    "people['Marvin'] = {\"Name\":'Marvin',\n",
    "                    \"Gender\":'Unknown',\n",
    "                    \"Occupation\":'Paranoid Android',\n",
    "                    \"Home Planet\":'Unknown'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ec4b53ff",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:05:49.346513Z",
     "start_time": "2021-12-19T02:05:49.325954Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Ford': {'Name': 'Ford Prefect',\n",
       "  'Gender': 'Male',\n",
       "  'Occupation': 'Researcher',\n",
       "  'Home Planet': 'Betelgeuse Seven'},\n",
       " 'Arthur': {'Name': 'Arthur Dent',\n",
       "  'Gender': 'Male',\n",
       "  'Occupation': 'Sandwich-Maker',\n",
       "  'Home Planet': 'Earth'},\n",
       " 'Tricia': {'Name': 'Tricia McMillan',\n",
       "  'Gender': 'Female',\n",
       "  'Occupation': 'Mathematician',\n",
       "  'Home Planet': 'Earth'},\n",
       " 'Marvin': {'Name': 'Marvin',\n",
       "  'Gender': 'Unknown',\n",
       "  'Occupation': 'Paranoid Android',\n",
       "  'Home Planet': 'Unknown'}}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "people"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0736ffa8",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:05:59.865581Z",
     "start_time": "2021-12-19T02:05:59.846363Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Tricia McMillan'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "people['Tricia']['Name']       # 字典的查询：dict_name['key']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eeff731d",
   "metadata": {},
   "source": [
    "###  课后实践：\n",
    "> 1.请找出id为‘BOHGD588HJ'的信息(已做)\n",
    "> 2.请找出所有的 pois中的字典元素 的 id，存到一个id列表中\n",
    "> 3.请找出所有的 pois中的字典元素 的 name，存到一个id列表中\n",
    "> 4.请找出所有的 name以及 location 做一个字典（name_dict = {namel:location1,name2:location2}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2970fa6c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T01:58:28.932228Z",
     "start_time": "2021-12-19T01:58:28.923211Z"
    }
   },
   "outputs": [],
   "source": [
    "# D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D\n",
    "# 1. 如果 这个 k 已经存在了，不作任何修改\n",
    "# 2. 如果 这个 k 不存在，新增这个成员\n",
    "\n",
    "vowels = [\"a\",\"e\",\"i\",\"o\",\"u\"]\n",
    "found = {\n",
    "    \"a\":2\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "00ad1c56",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T01:59:07.414011Z",
     "start_time": "2021-12-19T01:59:07.398119Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "found.setdefault('e',5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "de87a167",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T01:59:10.426783Z",
     "start_time": "2021-12-19T01:59:10.413980Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'a': 2, 'e': 5}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "found"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6fc1b8ba",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T01:59:31.064118Z",
     "start_time": "2021-12-19T01:59:31.055109Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on built-in function setdefault:\n",
      "\n",
      "setdefault(key, default=None, /) method of builtins.dict instance\n",
      "    Insert key with a value of default if key is not in the dictionary.\n",
      "    \n",
      "    Return the value for key if key is in the dictionary, else default.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(found.setdefault)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "7be679ff",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:03:46.346064Z",
     "start_time": "2021-12-19T02:03:42.504400Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入文本内容:hello\n"
     ]
    }
   ],
   "source": [
    "# 优化实践（一）：文本中不出现的元音字母，不增加到字典当中\n",
    "vowels = [\"a\",\"e\",\"i\",\"o\",\"u\"]\n",
    "found = {}\n",
    "word = input(\"请输入文本内容:\")\n",
    "\n",
    "for i in word:\n",
    "    if i in vowels:\n",
    "        found.setdefault(i,0) # 初始化值为0 ，found 中没有该元素时，初始化\n",
    "        found[i] += 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c2cbeb1f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:04:05.824155Z",
     "start_time": "2021-12-19T02:04:05.815119Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'e': 1, 'o': 1}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 只有出现过的元素，统计其词频\n",
    "found"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ec092bcb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:09:09.333914Z",
     "start_time": "2021-12-19T02:09:09.303368Z"
    }
   },
   "outputs": [],
   "source": [
    "广州南方学院 = {'status': '1',\n",
    " 'regeocode': {'roads': [{'id': '020F49F0050461206',\n",
    "    'location': '113.678,23.6284',\n",
    "    'direction': '北',\n",
    "    'name': '博学路',\n",
    "    'distance': '7.63232'},\n",
    "   {'id': '020F49F0050462229',\n",
    "    'location': '113.679,23.6245',\n",
    "    'direction': '北',\n",
    "    'name': '老虎形街',\n",
    "    'distance': '445.159'},\n",
    "   {'id': '020F49F0050462451',\n",
    "    'location': '113.677,23.6347',\n",
    "    'direction': '南',\n",
    "    'name': '中山路',\n",
    "    'distance': '708.299'}],\n",
    "  'roadinters': [{'second_name': '中山路',\n",
    "    'first_id': '020F49F0050461206',\n",
    "    'second_id': '020F49F0050462451',\n",
    "    'location': '113.676794,23.634661',\n",
    "    'distance': '708.299',\n",
    "    'first_name': '博学路',\n",
    "    'direction': '南'}],\n",
    "  'formatted_address': '广东省广州市从化区温泉镇博学路',\n",
    "  'addressComponent': {'city': '广州市',\n",
    "   'province': '广东省',\n",
    "   'adcode': '440117',\n",
    "   'district': '从化区',\n",
    "   'towncode': '440117100000',\n",
    "   'streetNumber': {'number': '24号',\n",
    "    'location': '113.677267,23.629149',\n",
    "    'direction': '西北',\n",
    "    'distance': '129.943',\n",
    "    'street': '博学路'},\n",
    "   'country': '中国',\n",
    "   'township': '温泉镇',\n",
    "   'businessAreas': [[]],\n",
    "   'building': {'name': [], 'type': []},\n",
    "   'neighborhood': {'name': [], 'type': []},\n",
    "   'citycode': '020'},\n",
    "  'aois': [],\n",
    "  'pois': [{'id': 'B0FFG4TAF2',\n",
    "    'direction': '东南',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉镇乌土村松浪队5号(近博学路)',\n",
    "    'poiweight': '0.237309',\n",
    "    'name': '广州南方公寓',\n",
    "    'location': '113.678983,23.627778',\n",
    "    'distance': '102.617',\n",
    "    'tel': '13622768437',\n",
    "    'type': '商务住宅;住宅区;住宅小区'},\n",
    "   {'id': 'B0H6FA18J5',\n",
    "    'direction': '东南',\n",
    "    'businessarea': [],\n",
    "    'address': '从莞深高速(广州南方学院南侧)',\n",
    "    'poiweight': '0.223065',\n",
    "    'name': '保利半山花园',\n",
    "    'location': '113.679358,23.627672',\n",
    "    'distance': '139.054',\n",
    "    'tel': [],\n",
    "    'type': '商务住宅;住宅区;住宅区'},\n",
    "   {'id': 'B00140TWHT',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '笃行路2',\n",
    "    'poiweight': '0.157653',\n",
    "    'name': '教工住宅1号',\n",
    "    'location': '113.678490,23.630432',\n",
    "    'distance': '222.658',\n",
    "    'tel': [],\n",
    "    'type': '商务住宅;住宅区;住宅小区'},\n",
    "   {'id': 'B0FFHRJDM9',\n",
    "    'direction': '东南',\n",
    "    'businessarea': [],\n",
    "    'address': '中大南方学院南门1号',\n",
    "    'poiweight': '0.256152',\n",
    "    'name': '中南公寓',\n",
    "    'location': '113.680349,23.627573',\n",
    "    'distance': '231.723',\n",
    "    'tel': '13711245345',\n",
    "    'type': '商务住宅;住宅区;住宅小区'},\n",
    "   {'id': 'B0HGD588HJ',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院教学楼4号',\n",
    "    'location': '113.677460,23.630490',\n",
    "    'distance': '242.901',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0FFHZH0IK',\n",
    "    'direction': '西北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路广州南方学院综合楼内',\n",
    "    'poiweight': '0.17934',\n",
    "    'name': '地下铁',\n",
    "    'location': '113.677941,23.629029',\n",
    "    'distance': '74.1376',\n",
    "    'tel': [],\n",
    "    'type': '餐饮服务;冷饮店;冷饮店'},\n",
    "   {'id': 'B0HGDU76L2',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院2号实验楼',\n",
    "    'location': '113.678211,23.630956',\n",
    "    'distance': '280.003',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0FFKP838K',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路25',\n",
    "    'poiweight': '0.191742',\n",
    "    'name': '教学楼3号(外国语学院)',\n",
    "    'location': '113.677247,23.630947',\n",
    "    'distance': '298.093',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;高等院校'},\n",
    "   {'id': 'B0HGDU8NLD',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路附近',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院1号实验楼',\n",
    "    'location': '113.678215,23.631370',\n",
    "    'distance': '326.007',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0HGD58UTU',\n",
    "    'direction': '西北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路',\n",
    "    'poiweight': '0.191229',\n",
    "    'name': '广州南方学院2号教学楼',\n",
    "    'location': '113.677060,23.631346',\n",
    "    'distance': '346.352',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B00140MR9A',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉大道882号',\n",
    "    'poiweight': '0.450402',\n",
    "    'name': '广州南方学院',\n",
    "    'location': '113.679262,23.632583',\n",
    "    'distance': '471.564',\n",
    "    'tel': '020-87828988;020-61787331',\n",
    "    'type': '科教文化服务;学校;高等院校'},\n",
    "   {'id': 'B0HGDU92JD',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': [],\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院教学楼1号',\n",
    "    'location': '113.677077,23.631783',\n",
    "    'distance': '391.548',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0HGD592BJ',\n",
    "    'direction': '东北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉大道886号广州南方学院内',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院综合楼',\n",
    "    'location': '113.680117,23.631544',\n",
    "    'distance': '392.731',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0FFKP81F0',\n",
    "    'direction': '西北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路19号附近',\n",
    "    'poiweight': '0.191742',\n",
    "    'name': '教学楼1号(文学与传媒学院)',\n",
    "    'location': '113.676866,23.631736',\n",
    "    'distance': '393.93',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;科教文化场所;科教文化场所'},\n",
    "   {'id': 'B0FFLBEOND',\n",
    "    'direction': '东北',\n",
    "    'businessarea': [],\n",
    "    'address': '从莞深高速(广州南方学院)',\n",
    "    'poiweight': '0.190963',\n",
    "    'name': '聚贤楼10号',\n",
    "    'location': '113.681253,23.631036',\n",
    "    'distance': '418.51',\n",
    "    'tel': [],\n",
    "    'type': '商务住宅;住宅区;宿舍'},\n",
    "   {'id': 'B0FFH6K3U9',\n",
    "    'direction': '西北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉镇温泉大道882号广州南方学院H7栋1-5层',\n",
    "    'poiweight': '0.254885',\n",
    "    'name': '广州中大南方招待所',\n",
    "    'location': '113.676330,23.631332',\n",
    "    'distance': '378.102',\n",
    "    'tel': '020-61787222',\n",
    "    'type': '住宿服务;住宿服务相关;住宿服务相关'},\n",
    "   {'id': 'B0HGD58NF8',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉大道882号广州南方学院新综合楼2层',\n",
    "    'poiweight': '0.191229',\n",
    "    'name': '广州南方学院达人书院',\n",
    "    'location': '113.679041,23.632392',\n",
    "    'distance': '446.366',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;科教文化场所;科教文化场所'},\n",
    "   {'id': 'B0FFKUVYWV',\n",
    "    'direction': '东北',\n",
    "    'businessarea': [],\n",
    "    'address': '保利桃花源',\n",
    "    'poiweight': '0.273168',\n",
    "    'name': '广州和风庭阿七度假别墅',\n",
    "    'location': '113.681736,23.630569',\n",
    "    'distance': '424.35',\n",
    "    'tel': '18681565305',\n",
    "    'type': '住宿服务;住宿服务相关;住宿服务相关'},\n",
    "   {'id': 'B0HGDU99RM',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉大道882号广州南方学院内',\n",
    "    'poiweight': '0.257947',\n",
    "    'name': '广州南方学院图书馆',\n",
    "    'location': '113.679177,23.632762',\n",
    "    'distance': '489.331',\n",
    "    'tel': '020-61787368;020-61787371',\n",
    "    'type': '科教文化服务;图书馆;图书馆'},\n",
    "   {'id': 'B0HGDU92JC',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路附近',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院4号实验楼',\n",
    "    'location': '113.679963,23.632652',\n",
    "    'distance': '498.883',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0FFL7C054',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉镇博学路882号(广州南方学院商业中心1层)',\n",
    "    'poiweight': '0.317505',\n",
    "    'name': '广州U优森特酒店',\n",
    "    'location': '113.679226,23.632528',\n",
    "    'distance': '464.819',\n",
    "    'tel': '15813395296',\n",
    "    'type': '住宿服务;住宿服务相关;住宿服务相关'},\n",
    "   {'id': 'B0FFG8CSEK',\n",
    "    'direction': '东北',\n",
    "    'businessarea': [],\n",
    "    'address': '从莞深高速(广州南方学院)',\n",
    "    'poiweight': '0.185371',\n",
    "    'name': 'L5员工宿舍',\n",
    "    'location': '113.682583,23.631487',\n",
    "    'distance': '554.129',\n",
    "    'tel': [],\n",
    "    'type': '商务住宅;住宅区;宿舍'},\n",
    "   {'id': 'B0HGD58FR2',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '广州南方学院',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院教学楼9号',\n",
    "    'location': '113.679747,23.633032',\n",
    "    'distance': '532.163',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0HG5Z9JNK',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路',\n",
    "    'poiweight': '0.221553',\n",
    "    'name': '广州南方学院教学楼7号',\n",
    "    'location': '113.678600,23.633330',\n",
    "    'distance': '544.868',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0HGD599JM',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉大道882号广州南方学院',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院第11教学楼',\n",
    "    'location': '113.680037,23.633173',\n",
    "    'distance': '556.036',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0GUJYPEG2',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉大道882号广州南方学院内博学路6号之3',\n",
    "    'poiweight': '0.216026',\n",
    "    'name': '怒烤烤串(从化店)',\n",
    "    'location': '113.677160,23.632910',\n",
    "    'distance': '510.112',\n",
    "    'tel': [],\n",
    "    'type': '餐饮服务;中餐厅;特色/地方风味餐厅'},\n",
    "   {'id': 'B0HGDU6Z41',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '温泉大道882',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院教学楼6号',\n",
    "    'location': '113.678424,23.633710',\n",
    "    'distance': '586.331',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'},\n",
    "   {'id': 'B0HGD580NZ',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '博学路7号附近',\n",
    "    'poiweight': '0.285712',\n",
    "    'name': '广州南方学院惟贤门',\n",
    "    'location': '113.678437,23.633721',\n",
    "    'distance': '587.601',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;高等院校'},\n",
    "   {'id': 'B0HGDU7T1K',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '从莞深高速(广州南方学院)',\n",
    "    'poiweight': '0.191229',\n",
    "    'name': '广州南方学院教学楼10号',\n",
    "    'location': '113.680125,23.633492',\n",
    "    'distance': '592.504',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;科教文化场所;科教文化场所'},\n",
    "   {'id': 'B0HGDU76L1',\n",
    "    'direction': '北',\n",
    "    'businessarea': [],\n",
    "    'address': '中山路与博学路交叉口东南150米',\n",
    "    'poiweight': '0.221662',\n",
    "    'name': '广州南方学院教学楼5号',\n",
    "    'location': '113.678046,23.633982',\n",
    "    'distance': '616.848',\n",
    "    'tel': [],\n",
    "    'type': '科教文化服务;学校;学校'}]},\n",
    " 'info': 'OK',\n",
    " 'infocode': '10000'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d302f4d4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:09:27.663044Z",
     "start_time": "2021-12-19T02:09:27.657083Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['status', 'regeocode', 'info', 'infocode'])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "广州南方学院.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "a2efa049",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:09:51.250953Z",
     "start_time": "2021-12-19T02:09:51.243973Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1'"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "广州南方学院['status']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "70c8eb8d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:10:22.026911Z",
     "start_time": "2021-12-19T02:10:22.018920Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['roads', 'roadinters', 'formatted_address', 'addressComponent', 'aois', 'pois'])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "广州南方学院['regeocode'].keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "cbb372b9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-12-19T02:13:02.067104Z",
     "start_time": "2021-12-19T02:13:02.052516Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'id': 'B0HGD588HJ', 'direction': '北', 'businessarea': [], 'address': '博学路', 'poiweight': '0.221662', 'name': '广州南方学院教学楼4号', 'location': '113.677460,23.630490', 'distance': '242.901', 'tel': [], 'type': '科教文化服务;学校;学校'}\n"
     ]
    }
   ],
   "source": [
    "#  列表 ： 存相同数据结构类型数据  but usually the items all have the same type\n",
    "pois_list = 广州南方学院['regeocode']['pois']\n",
    "for i in pois_list:\n",
    "    if i[\"id\"] == 'B0HGD588HJ':\n",
    "        print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b50d61e4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "17b781b0",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
